using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.IO;
using EditeurSyntaxiqueVocal.Controls;


namespace EditeurSyntaxiqueVocal.Class
{
    public class RecentFileMaping
    {
        private static int _taileRecetFileMenu = 7;

        public RecentFileMaping()
        {
        }

        public static int TaileRecetFileMenu
        {
            get { return _taileRecetFileMenu; }
            set { _taileRecetFileMenu = value; }
        }

        public static ListeRecentFiles OuvrirLitseRecentFile()
        {
            return OuvrireFichier(VarStatic.RepertoireDataApp + "RecentFiles.rf");
        }

        public static void EnregistrerLitseRecentFile()
        {

            EnregistrerFichier(StartPageOnglet.RecentFiles, VarStatic.RepertoireDataApp + "RecentFiles.rf");
        }

        private static ListeRecentFiles OuvrireFichier(string nomFichier)
        {
            if(!File.Exists(nomFichier)) return new ListeRecentFiles();
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream fLister = new FileStream(nomFichier, FileMode.OpenOrCreate, FileAccess.Read);
            try
            {
                ListeRecentFiles listeOuvrir = (ListeRecentFiles)formatter.Deserialize(fLister);
                return listeOuvrir;
            }
            catch
            {
                return new ListeRecentFiles();                
            }
            finally
            {
                fLister.Close();
            }
        }

        private static void EnregistrerFichier(List<TokenRecentFile> listeEnregistre, string nomFichier)
        {
            if (!File.Exists(nomFichier))
            {
                if (!Directory.Exists(Path.GetDirectoryName(nomFichier)))
                    Directory.CreateDirectory(Path.GetDirectoryName(nomFichier));
                File.Create(nomFichier);
            }
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream fListew = new FileStream(nomFichier, FileMode.OpenOrCreate, FileAccess.Write);
            formatter.Serialize(fListew, listeEnregistre);
            fListew.Close();
        }

    }
}
